package com.ahuan.utils;

import com.ahuan.domain.Module;

import java.util.ArrayList;
import java.util.List;

public class TreeBuilder {

    private List<Module> modules;

    public TreeBuilder(List<Module> modules) {
        this.modules = modules;
    }

    // 递归构建菜单树--另一个方案是在前端构建，减轻服务器压力
    public List<Module> buildTree(String parentId) {
        List<Module> children = new ArrayList<>();
        for (Module module : modules) {
            if (module.getPId().equals(parentId)) {
                List<Module> subChildren = buildTree(module.getId());
                module.setChildren(subChildren);
                children.add(module);
            }
        }
        return children;
    }

    //测试
    public static void main(String[] args) {
        List<Module> nodes = new ArrayList<>();
//        nodes.add(new Module("1", "0", "结点1",true,true,null)); // 根节点
//        nodes.add(new Module("2", "1", "结点2",true,true,null)); // 节点1的子节点
//        nodes.add(new Module("3", "1", "结点3",true,true,null)); // 节点1的子节点
//        nodes.add(new Module("4", "2", "结点4",true,true,null)); // 节点2的子节点
//        nodes.add(new Module("5", "0", "结点5",true,true,null)); // 节点2的子节点

        TreeBuilder treeBuilder = new TreeBuilder(nodes);
        List<Module> tree = treeBuilder.buildTree("0"); // 传入根节点的 ID，这里假设根节点的 parentId 为 0
        printTree(tree, 0);
//        System.out.println(tree);
    }

    public static void printTree(List<Module> nodes, int depth) {
        for (Module node : nodes) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < depth; i++) {
                sb.append("  "); // 用空格表示层级关系
            }
            sb.append(node.getName());
            System.out.println(sb.toString());
//            printTree(node.getChildren(), depth + 1);
        }
    }
}
